# openbox-config

A config that mimics traditional desktop environment in Openbox. Available in Dark and Light variants.

<img src="https://notabug.org/adnan360/openbox-config/raw/master/assets/screenshot-01.png" title="Openbox config screenshot light theme" alt="Openbox config screenshot light theme" />

<img src="https://notabug.org/adnan360/openbox-config/raw/master/assets/screenshot-02.png" title="Openbox config screenshot dark theme" alt="Openbox config screenshot dark theme" />


## Installation

You can either choose automatic or manual installation procedure.

### Automatic installation

_**WARNING:** The automatic install script is under active development. It can break your system at any moment. Please do not use on production systems and remember to keep backup before running._

Make sure you have `bash` and either `sudo` or `doas` installed.

And then run:

```sh
./install.sh
```

It will automatically install all the dependencies and programs mentioned in the `custom.default.yaml` and `custom.yaml` files, installs the config, sets icon theme etc. without you having to do almost anything.

For details on what this script does and which distros or systems tested, see [install](docs/install.md). Please post an issue if you find anything not working.

### Manual installation

#### Install Prerequisites

_Arch Linux:_

```
sudo pacman -S openbox tint2 jgmenu perl-gtk3 obmenu-generator xdotool wmctrl network-manager-applet gsimplecal rofi papirus-icon-theme volumeicon cbatticon slim xfce4-notifyd
sudo systemctl enable slim
pakku -S ksuperkey  # install through AUR
```

_Void Linux:_

```
sudo xbps-install openbox tint2 jgmenu perl-Gtk3 obmenu-generator xdotool wmctrl network-manager-applet gsimplecal-gtk3 rofi papirus-icon-theme volumeicon cbatticon slim xfce4-notifyd ksuperkey
sudo ln -s /etc/sv/slim /var/service/
```

_FreeBSD:_

```
sudo pkg install openbox tint2 jgmenu xdotool wmctrl networkmgr gsimplecal rofi papirus-icon-theme volumeicon slim notification-daemon
# obmenu-generator, cbatticon, ksuperkey may have to be built from source. See docs/setup.md for details. They're optional though and you can skip them if you like.
sudo sysrc slim_enable=yes
sudo sysrc dbus_enable="YES"
```

_Slim login theme:_

```
# Apply slim theme
sudo cp -r misc/greeny_dark/ /usr/share/slim/themes/
sudo sed -i "s/\(^current_theme.*\)/#\1\ncurrent_theme  greeny_dark/" /etc/slim.conf
# On FreeBSD
sudo cp -r misc/greeny_dark/ /usr/local/share/slim/themes/greeny_dark/
sudo sed -i'.bak' "s/\(^current_theme.*\)/#\1\ncurrent_theme  greeny_dark/" /usr/local/etc/slim.conf
```

\* Some packages are optional and depends upon your preference.<br/>
\* `perl-gtk3` is for generating menu with [icons](https://forum.manjaro.org/t/obmenu-generator-i-error/124436). When `gtk2-perl` is only available, install it and then comment the `use_gtk3` line on `~/.config/obmenu-generator/config.pl`. (See Troubleshooting section below for details)

Optionally, install these packages to configure:

```sh
#Arch Linux:
sudo pacman -S lxappearance obconf
# Void Linux:
sudo xbps-install lxappearance obconf
# FreeBSD:
sudo pkg install lxappearance obconf
```

#### Actual installation

Make sure Python3 and Python Pip (`python-pip` on Arch Linux, `python3-pip` on Void Linux, `py38-pip` on FreeBSD) is installed. Then:

```
pip install dotdrop
cd /path/to/this/repo
# For light theme
dotdrop install -p default -f
# For dark theme
dotdrop install -p dark -f
# -f overrides already existing config files on system
openbox --reconfigure
```

Afterwards:
- Launch `lxappearance`, go to **Icon Theme** tab and and change icon to **Papirus** to show proper icons on system tray.
- To choose a GTK theme you can choose **Adwaita**, **Adwaita-dark** or anything else from `lxappearance` to match your Openbox theme.

Then reboot to an Openbox session. If you have multiple DEs installed, you can press F1 on slim login screen to choose Openbox. If Openbox session does not start even after selecting it, please refer to Troubleshooting section below.


## Customization

Some customization changes require editing a yaml file for convenience. The `custom.yaml` file overrides the default values.

```
cp custom.default.yaml custom.yaml
# or...
cp custom.default.yaml ~/.local/share/openbox-config/custom.yaml
# or you can copy just the variables you want to change
# change the variables (see below) ... then:
dotdrop install -p default -f # or -p dark
```

##### 1\. Adding/removing apps on Tint2 panel

Edit `quick_launch_items` on `custom.yaml`.

##### 2\. Changing apps on Openbox menu

Edit `custom.yaml`.

##### 3\. Changing clock format

Edit `clock_1_format` and `clock_2_format` on `custom.yaml`.

##### 4\. Remove icon from Show Desktop button

Set `show_desktop_icon_visible` to `false` on `custom.yaml`. e.g.

```
show_desktop_icon_visible: false
```

##### 5\. Add items to startup

Edit `autostart_items_add` on `custom.yaml`.


## Troubleshooting

### `obmenu-generator -i` saying invalid output and there is no `libgtk2-perl` package available

I have faced this on Debian Testing. Here's what you can do for Debian:

- Install from the repos [here](https://software.opensuse.org/download.html?project=home%3AHead_on_a_Stick%3Aobmenu-generator&package=obmenu-generator). If not possible, install manually:
```
git clone --depth=1 https://github.com/trizen/obmenu-generator.git
cd obmenu-generator
sudo cp obmenu-generator /usr/bin/obmenu-generator
sudo cp schema.pl /etc/xdg/obmenu-generator/schema.pl
sudo apt install libgtk3-perl perl-linux-desktopfiles libdata-dump-perl
```
- There is a `"use_gtk3" => 1,` [line](https://github.com/trizen/obmenu-generator/commit/d7685c5a95d302b9a998f911e96d7853160bcb5a) in `~/.config/obmenu-generator/config.pl`. Make sure it is there and uncommented. Now it should work as expected.

- Openbox session doesn't start from slim login
If for some reason, Openbox session does not start even after selecting it from slim, rather some other session get started, you may need to inspect the `~/.xsession` file and possibly would have to comment the line that runs `~/.xinitrc`. Faced this on Void Linux.

### `custom.yaml` is not taken into consideration in FreeBSD

Edit `config.yaml` and under `import_variables` comment every entry by adding a `#` before the line, except which config you want to use. However, you'll have to add all the variable values which you previously may have skipped. You can use `meld` or any diff program to do that easily.

If you are version controlling and you want to ignore this file (only locally), run:

```sh
git update-index --skip-worktree config.yaml
# to reverse
git update-index --no-skip-worktree config.yaml
# to see ignored files
git ls-files -v | grep "^S"
```

NOTE: This is just a workaround until the issue is fixed.

### No Adwaita or Adwaita Dark theme installed

Try installing `gnome-themes-extra` or equivalent package from system repo. If it still doesn't work:

```sh
mkdir -p ~/.themes
curl -L https://gitlab.gnome.org/GNOME/gnome-themes-extra/-/archive/master/gnome-themes-extra-master.tar.gz -o /tmp/gnome-themes.tar.gz || wget https://gitlab.gnome.org/GNOME/gnome-themes-extra/-/archive/master/gnome-themes-extra-master.tar.gz -O /tmp/gnome-themes.tar.gz
tar -xvf /tmp/gnome-themes.tar.gz -C /tmp/
cp -r /tmp/gnome-themes-extra-master/themes/{Adwaita,Adwaita-dark} ~/.themes/
```
